home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / COMP / SYMBOLS.DOC < prev    next >
Encoding:
Text File  |  1993-12-30  |  4.9 KB  |  112 lines

  1.  
  2. Beschreibung der Items im linearisierten Baum
  3.  
  4. Stand : 27.12.93
  5.  
  6.  
  7. Das erste Byte der Kennung enthält acht Flag-Bits:
  8.  
  9.   Bit 7   benutzerdefiniertes Item (also kein Standard-Symbol)
  10.   Bit 6   exportiertes Item
  11.   Bit 5   importiertes Item
  12.   Bit 4   bei Variablen: Externe Variable  (feste Adresse)
  13.           bei Procs, Consts (Typ 50): wird global exportiert (nur intern)
  14.   Bit 3   bei lokalen Variablen: REF-/VAR-Parameter
  15.           bei Procs: Parm-Übergabe auf A7
  16.   Bit 2   Item ist ein Typ-Descriptor (gelöscht bei anonymen Typen)
  17.   Bit 1   globales Item;
  18.   Bit 0   bei Types: skalarer Typ;
  19.           bei Variablen: schreibgeschützt (z.B. REF-Parameter)
  20.           bei Prozeduren: Rückgabewert in D0 statt auf A3-Stack
  21.  
  22. Das andere Byte gibt die Typ-Nr. des Items an.
  23.  
  24. Aufbau der einzelnen Item-Beschreibungen:
  25.  
  26. Art           Typ-Nr.
  27. ------------------------------------------------------------------------------
  28. Relay        |  0 | ^eigentliche Item-Beschreibung |
  29. LONGINT      |  1 | Größe.L |
  30. LONGREAL     |  2 | Größe.L |
  31. CHAR         |  3 | Größe.L |
  32. ZZ *1        |  4 | Größe.L |
  33. SET OF ... *7|  5 | Größe.L | ^ElementTyp |
  34. Prozedur     |  6 | Adr.L | ^1.Parameter | ^ResultTyp | ^letzte Ref |
  35.                     (Rest nur intern:) Länge.L | Adr.L |
  36. Parameter    |  7 | ^nächster Parameter | ^ParamterTyp | VarPar.W *2 |
  37. Opaque *3    |  8 | Größe.L |
  38. Enumeration  |  9 | Größe.L | Anzahl Elemente.L | ^1.Element |
  39. Enum-Element | 10 | OrdWert.W | ^Enum-Typ | ^nächstes Element |
  40. Subrange     | 11 | Größe.L | Untergrenze.L | Obergrenze.L | ^BasisTyp |
  41. ARRAY ...    | 12 | Größe.L | ^IndexTyp | ^ElementTyp |
  42. RECORD ...   | 13 | Größe.L | ^erstes Feld | ^lok.Baum | Baum |
  43. RECORD-Feld  | 14 | relAdr.L | ^Typ | ^nächstes Feld |
  44. Lok. Modul   | 15 | ^Baum (bei Qual-Export) | Adr.L | dummy.L | dummy.L |
  45.                     ^letzte Ref | Länge.L | Adr.L |
  46. Qualifier    | 16 | ^lok.Baum |
  47. Variable     | 17 | Adr.L | ^VarTyp | ^letzte Ref | *6 VarFlags.B |
  48.                     UsedDepth.B | (Rest nur intern:) Länge.L | Adr.L |
  49. Konstante alt| 18 | ^Typ | Größe.W | Wert... (in Long-Portionen) |
  50. Prozedur-Typ | 19 | Größe.L | ^1.Parameter | ^ResultTyp |
  51. POINTER TO...| 20 | Größe.L | ^BasisTyp |
  52. WORD         | 21 | Größe.L |
  53. LONGCARD     | 22 | Größe.L |
  54. ADDRESS      | 23 | Größe.L | ^BasisTyp |
  55. BOOLEAN      | 24 | Größe.L |
  56. Opaque *4    | 25 | Größe.L |
  57. LONGWORD     | 26 | Größe.L |
  58. String       | 27 | Größe.L | Zeichenzahl.L |
  59. TABLE im Code| 28 | ...
  60. Asm-Label    | 29 | ...                 (nur Compiler-intern verwendet)
  61. LongBoth     | 30 | Größe.L |
  62. String-Const | 31 | Zeichenzahl.B | {char.B} |
  63. Open-Array   | 32 | ^ElementTyp |
  64. INTEGER      | 33 | Größe.L |
  65. CARDINAL     | 34 | Größe.L |
  66. ShortBoth    | 35 | Größe.L |
  67. Std-Funktion | 36 | F-Nr.W |            (nur Compiler-intern verwendet)
  68. Std-F.-Parm  | 37 | ...                 (nur Compiler-intern verwendet)
  69. BYTE         | 38 | Größe.L |
  70. BYTE(signed) | 39 | Größe.L |           (nur Compiler-intern verwendet)
  71. REAL         | 40 | Größe.L |
  72. BITNUM       | 41 | Größe.L |
  73. Long Open-Arr| 42 | ^ElementTyp |
  74. Any Type     | 43 | Größe.L |           (nur Compiler-intern verwendet)
  75. Proc-Typ *5  | 44 | Größe.L | ^Proc-Typ (m. Kennung 19) |
  76. SET OF ... *7| 45 | Größe.L | ^ElementTyp |
  77. Tag-Feld     | 46 | ^Rec-Feld | Untergrenze.L | Obergrenze.L | ^nächstes Feld |
  78. REC-Variante | 47 | dummy.L | ^Typ | ^nächstes Feld | ^Rec-Feld | ^Tag-Liste |
  79. Forward      | 48 | ...
  80. Konstante neu| 50 | Adr.L | ^Typ | ^letzte Ref | Größe.W | Wert (in Long-Portionen) |
  81.  
  82. Anmerkungen:
  83.  
  84. 1) Der Typ ZZ ist nur für ordinale Konstanten vorgesehen: Er umfaßt den
  85.    Bereich von MIN (LONGINT) bis MAX (LONGCARD) und besteht deshalb aus 33
  86.    signifikanten Bits.
  87. 2) Bit 8 gesetzt -> Parameter ist "VAR"-Parameter
  88.    Bit 9 gesetzt -> Parameter ist "REF"-Parameter
  89.    Bit 7 gesetzt -> Bit 0-5 sind Register-Nr, in der das Arg. zu übergeben ist.
  90. 3) Beschreibt einen im eigenen Modul definierten opaquen Typ (Compiler-intern).
  91. 4) Beschreibt einen ex-/importierten opaquen Typ.
  92. 5) Der Prozedur-Typ mit der Nr. 44 ist für value-Parameter vorgesehen,
  93.    die auch eine Zuweisung von lokalen Prozeduren erlauben (Größe: 8 Byte)
  94. 6) "VarFlags" und "UsedDepth" sind nur im Compiler temporär vorhanden.
  95.    Die Bits in VarFlags:
  96.      Bit 7: Reg-Var; Bit 6: z.Zt. im Reg; Bit 5: dirty; Bit 0..4: Reg-Nr.
  97.    In UsedDepth wird der tiefste Scope-Level aller Zugriffe gespeichert.
  98. 7) SETs m. Kennung 45 kommen nur bei Größen bis 32 Bit vor, während Kennung
  99.    5 für größere SETs oder bei $U- verwendet wird (andere Ordnung).
  100.  
  101. * Die "Größe" gibt bei Types ihre Länge in Bytes an. Sie ist in der Regel
  102.   konstant.
  103.  
  104. * ".L" bedeutet einen Long-Wert (4 Byte), ".W" einen Word-Wert (2 Byte) und
  105.   ".B" einen Byte-Wert.
  106.  
  107. * Die mit "^" bezeichneten Einträge sind Word-Daten (2 Byte) und
  108.   verweisen auf die Item-Nummer der zugehörigen Beschreibung.
  109.  
  110. * Item-Nummern mit dem Wert "0" bedeuten, dass das betreffende Item nicht
  111.   verwendet wird.
  112.